import functools
# 共用的自定义工具类
from flask import current_app
from flask import g
from flask import session

from info.food_models import Admin


def do_index_class(index):
    """返回指定索引对应的类名"""

    if index == 0:
        return 'first'
    elif index == 1:
        return 'second'
    elif index == 2:
        return 'third'




# 这个一个带参数(不定长参数)的装饰器
# f代表是new_detail
def user_login_data(f):
    # 使用functools.wraps 去装饰内层函数,可以保持当前装饰器去装饰的函数,__name__的值不变
    """
    functools.wraps
    的作用是将原函数对象的指定属性复制给包装函数对象, 默认有
    module、name、doc, 或者通过参数选择

    """

    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        user_id = session.get('user_id')
        admin = None
        if user_id:
            try:
                admin = Admin.query.get(user_id)
            except Exception as e:
                current_app.logger.error(e)
        # 把查询出来的数据赋值给g变量
        g.admin = admin
        return f(*args, **kwargs)
    return wrapper




